# -*- coding: utf-8 -*-
"""
彩票数据爬虫配置文件
"""

import os
from pathlib import Path
from dotenv import load_dotenv

# 加载环境变量
env_path = Path(__file__).parent.parent.parent / '.env'
load_dotenv(env_path)

# 项目根目录
BASE_DIR = Path(__file__).parent.parent
ROOT_DIR = BASE_DIR.parent.parent

# 数据库配置
DATABASE_CONFIG = {
    'host': os.getenv('DB_HOST', 'localhost'),
    'port': int(os.getenv('DB_PORT', 3306)),
    'user': os.getenv('DB_USER', 'root'),
    'password': os.getenv('DB_PASSWORD', ''),
    'database': os.getenv('DB_NAME', 'lottery_api'),
    'charset': 'utf8mb4'
}

# Redis配置
REDIS_CONFIG = {
    'host': os.getenv('REDIS_HOST', 'localhost'),
    'port': int(os.getenv('REDIS_PORT', 6379)),
    'password': os.getenv('REDIS_PASSWORD', None),
    'db': int(os.getenv('REDIS_DB', 0))
}

# Kafka配置
KAFKA_CONFIG = {
    'bootstrap_servers': os.getenv('KAFKA_SERVERS', 'localhost:9092'),
    'topic': os.getenv('KAFKA_TOPIC', 'lottery_data')
}

# 极速数据API配置
JISU_API_CONFIG = {
    'base_url': 'https://api.jisuapi.com/caipiao',
    'appkey': '9aa6d92f8d70a0a9',
    'daily_limit': 100,  # 每日免费限制100次
    'timeout': 30
}

# 彩种配置 - 使用极速数据API
LOTTERY_TYPES = {
    'ssq': {
        'name': '双色球',
        'caipiaoid': 11,  # 官网确认：双色球ID=11
        'daily_fetch_count': 280,  # 14次请求 * 20条/次 = 280条
        'draw_days': [2, 4, 0],  # 周二、周四、周日
        'numbers_count': 7,  # 6红球+1蓝球
        'enabled': True
    },
    'dlt': {
        'name': '大乐透',
        'caipiaoid': 14,  # 官网确认：大乐透ID=14
        'daily_fetch_count': 280,  # 14次请求 * 20条/次 = 280条
        'draw_days': [1, 3, 6],  # 周一、周三、周六
        'numbers_count': 7,  # 5前区+2后区
        'enabled': True
    },
    'fc3d': {
        'name': '福彩3D',
        'caipiaoid': 12,  # 官网确认：福彩3D ID=12
        'daily_fetch_count': 240,  # 12次请求 * 20条/次 = 240条
        'draw_days': list(range(7)),  # 每天
        'numbers_count': 3,
        'enabled': True
    },
    'qlc': {
        'name': '七乐彩',
        'caipiaoid': 13,  # 官网确认：七乐彩ID=13
        'daily_fetch_count': 240,  # 12次请求 * 20条/次 = 240条
        'draw_days': [1, 3, 5],  # 周一、周三、周五
        'numbers_count': 8,  # 7基本号+1特别号
        'enabled': True
    },
    'pl3': {
        'name': '排列3',
        'caipiaoid': 16,  # 官网确认：排列3 ID=16
        'daily_fetch_count': 240,  # 12次请求 * 20条/次 = 240条
        'draw_days': list(range(7)),  # 每天
        'numbers_count': 3,
        'enabled': True
    },
    'pl5': {
        'name': '排列5',
        'caipiaoid': 17,  # 官网确认：排列5 ID=17
        'daily_fetch_count': 240,  # 12次请求 * 20条/次 = 240条
        'draw_days': list(range(7)),  # 每天
        'numbers_count': 5,
        'enabled': True
    },
    'qxc': {
        'name': '七星彩',
        'caipiaoid': 15,  # 官网确认：七星彩ID=15
        'daily_fetch_count': 240,  # 12次请求 * 20条/次 = 240条
        'draw_days': [2, 5],  # 周二、周五
        'numbers_count': 7,
        'enabled': True
    },
    'kl8': {
        'name': '快乐8',
        'caipiaoid': 89,  # 官网确认：快乐8 ID=89
        'daily_fetch_count': 240,  # 12次请求 * 20条/次 = 240条
        'draw_days': list(range(7)),  # 每天
        'numbers_count': 20,  # 快乐8开奖20个号码
        'enabled': True
    }
}

# 爬虫配置
CRAWLER_CONFIG = {
    'user_agents': [
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
        'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    ],
    'request_delay': 0.2,  # 请求间隔(秒) - 降低到0.2秒以提高速度
    'retry_times': 3,  # 重试次数
    'timeout': 30,  # 超时时间(秒)
    'concurrent_requests': 5,  # 并发请求数
    'max_concurrent': 3,  # 最大并发线程数
}

# 日志配置
LOG_CONFIG = {
    'level': 'INFO',
    'format': '{time:YYYY-MM-DD HH:mm:ss} | {level} | {name}:{function}:{line} | {message}',
    'rotation': '1 day',
    'retention': '30 days',
    'compression': 'zip',
    'file_path': BASE_DIR / 'logs' / 'crawler.log'
}

# 数据存储配置
STORAGE_CONFIG = {
    'data_dir': BASE_DIR / 'data',
    'backup_dir': BASE_DIR / 'data' / 'backup',
    'export_formats': ['json', 'csv', 'excel'],
    'auto_backup': True,
    'backup_interval': 24  # 小时
}

# API配置
API_CONFIG = {
    'admin_api_url': 'http://localhost:8000/api/v1',
    'frontend_api_url': 'http://localhost:9501/api/v1',
    'api_key': os.getenv('API_KEY', ''),
    'timeout': 30
}

# 代理配置
PROXY_CONFIG = {
    'enabled': False,
    'proxy_list': [],
    'rotation_interval': 300  # 代理轮换间隔(秒)
}

# 监控配置
MONITOR_CONFIG = {
    'enabled': True,
    'alert_email': os.getenv('ALERT_EMAIL', ''),
    'alert_threshold': {
        'error_rate': 0.1,  # 错误率阈值
        'response_time': 10  # 响应时间阈值(秒)
    }
}